﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using condortravel.operaciones.core.DataModel;
using System.Data.Linq;

namespace condortravel.operaciones.persistence.operacionesImpl
{
    public class RecursosSolicitadosDAOImpl: condortravel.operaciones.persistence.Impl.GenericDAO<Tb_RecursosSolicitados, int>
    {
        public override Tb_RecursosSolicitados update(Tb_RecursosSolicitados entity)
        {
            throw new NotImplementedException();
        }

        public override Tb_RecursosSolicitados getByID(int id)
        {
            throw new NotImplementedException();
        }

        public override void delete(int pk)
        {
            string deleteDetails = string.Format("delete  from Tb_RecursosSolicitados where recursoSolicitado_ID='{0}'", pk);
            this.executeSQL(deleteDetails);
        }

        public IList<Tb_RecursosSolicitados> getListRecursosSolicitados(int detalleTour)
        {
            using (ImpersonationHelper imp = new ImpersonationHelper(this.Impersonation.User, this.Impersonation.Domain, this.Impersonation.Password))
            {
                if (IsImpersonate)
                {
                    if (!imp.ImpersonateUser())
                    {
                        throw new Exception("The Impersonate has failed");
                    }

                }
                using (DataContext dataContext = this.getInstanceDataContextFactory())
                {
                    DataLoadOptions options = new DataLoadOptions();
                    options.LoadWith<Tb_RecursosSolicitados>(s => s.Tb_TipoGuia);
                    options.LoadWith<Tb_RecursosSolicitados>(s => s.Tb_TipoTransporte);
                    options.LoadWith<Tb_RecursosSolicitados>(s => s.Tb_Estado_Tour);


                    dataContext.LoadOptions = options;

                    return (from p in dataContext.GetTable<Tb_RecursosSolicitados>()
                            where
                            (p.detalleTour_ID == detalleTour)
                            select p).ToList<Tb_RecursosSolicitados>();
                }

            }
        }


		 public IList<Tb_RecursosSolicitados> getListRecursosSolicitados(int detalleTour,int tipoRecurso)
        {
            using (ImpersonationHelper imp = new ImpersonationHelper(this.Impersonation.User, this.Impersonation.Domain, this.Impersonation.Password))
            {
                if (IsImpersonate)
                {
                    if (!imp.ImpersonateUser())
                    {
                        throw new Exception("The Impersonate has failed");
                    }

                }
                using (DataContext dataContext = this.getInstanceDataContextFactory())
                {
                    DataLoadOptions options = new DataLoadOptions();
                    options.LoadWith<Tb_RecursosSolicitados>(s => s.Tb_TipoGuia);
                    options.LoadWith<Tb_RecursosSolicitados>(s => s.Tb_TipoTransporte);
                    options.LoadWith<Tb_RecursosSolicitados>(s => s.Tb_Estado_Tour);


                    dataContext.LoadOptions = options;

                    return (from p in dataContext.GetTable<Tb_RecursosSolicitados>()
                            where
                            (p.detalleTour_ID == detalleTour && p.tipoRecurso==tipoRecurso)
                            select p).ToList<Tb_RecursosSolicitados>();
                }

            }
        }
    }
}
